Developer Tools
2023 revision
- FE: NextJs + TailwindCSS
- BE:
- Express for complex large application => [[NextJs#NextJs for Backend | When not use NextJs for backend]]
- NextJS for simple API
- Communication:
- tRPC + NextJs for simple solo project (read [[Random thoughts (tech)#tRPC | here]])
- Tbh, most indie project should be fine with just tRPC + NextJs stack, and deploy everything on Vercel (with Serverless/Edge Function for NextJs
Api Routes
) - Ref: https://www.youtube.com/watch?v=qCLV0Iaq9zU
- Tbh, most indie project should be fine with just tRPC + NextJs stack, and deploy everything on Vercel (with Serverless/Edge Function for NextJs
- REST with separated BE/FE on different for larger project
- tRPC + NextJs for simple solo project (read [[Random thoughts (tech)#tRPC | here]])
- Bootstrap app
- If use NextJS fullstack => Manual but in the same repo, create-t3-app default to use PlanetScale, which we don't want
- Otherwise, traditional bootstrap FE and BE seperately
- ORM:
- Prisma: Matured but the query engine is sometimes questionable, a lot of feature, plugin, etc => Generally good but not really performant
- Drizzle: Still in beta, not matured
- Kysely: Best of both world of Prisma and Drizzle, typesafe and good DX, while maintaining raw SQL performant. Can also combined with Prisma to use its migration engine and then use
prisma-kysely
packages to generate kysely types => A little bit more setup than Prisma but really worth considering- Worth mentioning that we should not always rely on
kysely codegen
packages or similar, we can use it as a reference point but we should always keep a version inside our code and use it to initkysely
instead of the generated one innode_modules
=> Have more control over our types
- Worth mentioning that we should not always rely on
- Authentication: Auth.JS/NextAuthJS/Clerk
- Logging: Axiom
- Deployment:
- Vercel for NextJS
- Render/Railway for BE ExpressJs
- Database: Neondb/RDS
- Others: Upstash
- Redis, CRONs, event queues, kafka, rate limiting, and so much more.
- Knock.app for notifications
2023 version
Tools that help boost solo developer productiviy
- Deployment: Vercel (this is only for FE, what about BE?)
- BE Deployment: Render? (looks pretty good, but concern about spinning down on idle) or also look into Railway
- Database: Planetscale (MySQL but the developer experience is good?) => As MySQL does not support Vector type => Look more into Neondb or good old RDS
- Logging: Axiom (already has integration with Vercel)
- Others (cache, rate limit, integration etc): Upstash
Tech stacks
- FE + BE: NextJS => Second though: only for FE (as NextJS backend is serverless, which has some limitations)
- Serverless has short time out on each request, which is only around few seconds
- Serverless can't handle websocket
- Should not use really complex logic
- BE: ExpressJs
- Communications: tRPC
- Bootstrap app: create-t3-app => Nope, as it is too opinionated and relies heavily on NextJs => Still go with traditional seperate FE and BE repo
- Prisma/Drizzle
- Tailwind CSS
- Auth.JS/NextAuthJS/Clerk
- Astro for static site
- Turborepo
- FE + BE: NextJS => Second though: only for FE (as NextJS backend is serverless, which has some limitations)
Other tools
- Excalidraw => Drawing, diagraming
- Notion
- Linear => Project/task tracking
Sources